#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int Fibonacci(int arr[])
//{
//	arr[0] = 0;
//	arr[1] = 1;
//	int i = 0;
//	int j = 2;
//	while (arr[j - 1] + arr[j - 2] <= 1000000)
//	{
//		arr[j] = arr[j - 2] + arr[j - 1];
//		j++;
//	}
//	return j;
//}
//
//int Find_Step(int arr[], int num, int NUM)
//{
//	int i = 0;
//	int sub1 = 0;
//	int sub2 = 0;
//	for (i = 0; i < NUM - 1; i++)
//	{
//		if (num >= arr[i] && num <= arr[i + 1])
//		{
//			sub1 = num - arr[i];
//			sub2 = arr[i + 1] - num;
//			if (sub1 >= sub2)
//			{
//				return sub2;
//			}
//			else
//			{
//				return sub1;
//			}
//		}
//		else if (num >= arr[NUM - 1])
//		{
//			int ret = num - arr[NUM - 1];
//			return ret;
//		}
//	}
//}
//int main()
//{
//	int* p = malloc(1000);
//	if (p == NULL)
//	{
//		perror(malloc);
//		return 1;
//	}
//	int NUM = Fibonacci(p);
//	int num = 0;
//	scanf("%d", &num);
//	int ret = Find_Step(p, num, NUM);
//	printf("%d", ret);
//	return 0;
//}
#include <math.h>
#include <stdio.h>
int main()
{
	int fib1 = 0;
	int fib2 = 1;
	int fib3 = 1;
	int n = 0;
	scanf("%d", &n);
	while (1)
	{
		if (n == fib2)
		{
			printf("0\n");
			break;
		}
		else if (n < fib2)
		{
			if (abs(fib1 - n) < abs(fib2 - n))
			{
				printf("%d\n", abs(fib1 - n));

			}
			else
			{
				printf("%d", abs(fib2 - n));
			}
			break;
		}
		fib1 = fib2;
		fib2 = fib3;
		fib3 = fib1 + fib2;
	}
	return 0;
}